# _*_ coding:utf-8 _*_
# 开发团队: Mavericks
# 开发人员：Maverick·Ming
# 开发IDE： PyCharm
#   项目名：HelloWorld
#   文件名：6.09 重写_方法重写覆盖.py
# 开发时间：2021/3/26 12:43

# 定义一个类Animal
#   这个类需要两个方法run()，sleep()
class Animal:

    def run(self):
        print("I'm running")

    def sleep(self):
        print("I'm running")


# 定义一个狗类，run() sleep() bark()
class Dog(Animal):

    # 子类中编写与父类同名的方法，会覆盖/重写父类的方法
    # 通过子类调用该方法时，调用的时子类重写之后的方法
    # 这种方法称为，方法的重写/方法的覆盖(override)
    def run(self):
        print("Dog: I'm running")

    def bark(self):
        print("I'm braking!")


d = Dog()
d.run()

# 调用对象的方法时，编译器查找方法的顺序：
# 当我们调用对象的方法，首先在该对象中>类中>父类>父类的父类中（逐级向上）寻找
# 直到object也没有找到就会报错
